查看原文
其他

JajavaScript 正则表达式(RegExp)实用指南 (三)【译】

lamyoung 白玉无冰 2022-06-10

快速实践指南。用示例理解正则表达式。

在 JavaScript 正则表达式(RegExp)实用指南(一) 介绍了正则表达式的含义,创建方法和测试方法 ,在  JavaScript 正则表达式(RegExp)实用指南 (二) 介绍了正则表达式中的特殊字符,接下来看看几个练习吧。


练习正则表达式

让我们练习上面学到的一些概念。

  • 匹配任何10位数字:

    var regex = /^\d{10}$/;
    console.log(regex.test('9995484545'));
    // true

    让我们分解一下,看看每步做了什么。

  1. 如果我们要强制匹配必须跨越整个字符串,则可以添加量词^$插入符号^与输入字符串的开头匹配,而美元符号$与结尾匹配。因此,如果字符串包含的位数超过10位,则不会匹配。

  2. \d匹配任何数字字符。

  3. {10}与上一个表达式匹配,在这种情况下,\d恰好是10倍。因此,如果测试字符串包含的位数少于或大于10,则结果将为false



  • 匹配 以DD-MM-YYYY 或 DD-MM-YY格式 的日期。

    var regex = /^(\d{1,2}-){2}\d{2}(\d{2})?$/;
    console.log(regex.test('01-01-1990'));
    // true
    console.log(regex.test('01-01-90'));
    // true
    console.log(regex.test('01-01-190'));
    // false

    让我们分解一下,看看每步做了什么。

  1. 同样地,我们将整个正则表达式包装在^$内,以使匹配跨整个字符串。

  2. ( 第一个子表达式的开始。

  3. \d{1,2} 匹配至少1位和最多2位数字。

  4. - 匹配文字连字符-

  5. ) 第一个子表达式的结尾。

  6. {2} 与第一个子表达式完全匹配两次。

  7. \d{2} 精确匹配两位数。

  8. (\d{2})? 精确匹配两位数。但是它是可选的,因此年份包含2位数字或4位数字。



  • 匹配除换行符之外的所有内容
    表达式应匹配任何格式如abc.def.ghi.jkl的字符串,其中每个变量a,b,c,d,e,f,g,h,i,j,k,l可以是除换行符之外的任何字符。

    var regex = /^(.{3}\.){3}.{3}$/;
    console.log(regex.test('123.456.abc.def'));
    // true
    console.log(regex.test('1243.446.abc.def'));
    // false
    console.log(regex.test('abc.def.ghi.jkl'));
    // true

    让我们分解一下,看看每步做了什么。

  1. 我们将整个正则表达式包装在^$内,以便匹配跨整个字符串。

  2. ( 第一个子表达式的开始。

  3. .{3} 与除换行符之外的任何字符完全匹配3次。

  4. \. 匹配字符点.

  5. ) 第一个子表达式的结尾。

  6. {3} 与第一个子表达式完全匹配3次。

  7. .{3} 与除换行符之外的任何字符完全匹配3次。


总结

正则表达式有时可能会相当复杂,但是对上述概念的正确理解将有助于你轻松理解更复杂的正则表达式模式。你可以在这里( https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions )了解有关正则表达式的更多信息,在这里( https://www.hackerrank.com/domains/regex )练习。

方便大家查看,将学习网站和练习网站生成了二维码:

   


为你推荐




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存